package org.jetlinks.protocol.official.mqtt.down.radar60FL;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.jetlinks.core.message.function.FunctionInvokeMessage;
import org.jetlinks.protocol.official.TopicPayload;
import org.jetlinks.protocol.official.mqtt.down.radar60FL.handler.*;

import java.util.function.BiFunction;

/**
 * @Author bingzhong
 * @Date 2025/1/3 10:12
 * @Description
 */
@Getter
@AllArgsConstructor
public enum Radar60FLFunctionIdEnum {

    FallDown_QueryParam(Radar60FLQueryParamHandler::encode),
    FallDown_WorkDurationReportFrequency(Radar60FLWorkDurationReportFrequency::encode),
    FallDown_WorkMode(Radar60FLWorkMode::encode),
    FallDown_SceneMode(Radar60FLSceneMode::encode),
    FallDown_InstallAngle(Radar60FLInstallAngle::encode),
    FallDown_InstallHeight(Radar60FLInstallHeight::encode),
    FallDown_MovingTargetDetectionMaxDistance(Radar60FLMovingTargetDetectionMaxDistance::encode),
    FallDown_StaticTargetDetectionMaxDistance(Radar60FLStaticTargetDetectionMaxDistance::encode),
    FallDown_HumanSwitch(Radar60FLHumanSwitch::encode),
    FallDown_HorizontalDistanceOfMovement(Radar60FLHorizontalDistanceOfMovement::encode),
    FallDown_SittingHorizontalDistance(Radar60FLSittingHorizontalDistance::encode),
    FallDown_HumanExistenceJudgmentMethod(Radar60FLHumanExistenceJudgmentMethod::encode),
    FallDown_HumanPresenceJudgmentThreshold(Radar60FLHumanPresenceJudgmentThreshold::encode),
    FallDown_UnmannedTime(Radar60FLUnmannedTime::encode),
    FallDown_FallingAndBreakingHeight(Radar60FLFallingAndBreakingHeight::encode),
    FallDown_TrackPointInfoReportSwitch(Radar60FLTrackPointInfoReportSwitch::encode),
    FallDown_ResidentWarningDuration(Radar60FLResidentWarningDuration::encode),
    FallDown_ResidentWarningDurationSwitch(Radar60FLResidentWarningDurationSwitch::encode),
    FallDown_FallDuration(Radar60FLFallDuration::encode),
    FallDown_FallSensitivity(Radar60FLFallSensitivity::encode),
    FallDown_HeightAccumulativeTime(Radar60FLHeightAccumulativeTime::encode);

    private final BiFunction<FunctionInvokeMessage,String, TopicPayload> function;

}
